package com.pb.wkflow.core.service;

import com.pb.wkflow.api.controller.response.TaskResponse;

import java.util.Map;

/**
 * @author 苗益辉
 * @date 2022/6/20 21:26
 */
public interface WorkFlowEngineService {

    /**
     * 终止流程
     * @param processInstanceId 流程实例id
     * @param comment 终止意见
     * @param taskId 当前任务id
     * @param userId 终止用户
     */
    void terminateProcess(String processInstanceId, String comment, String taskId, String userId);

    /**
     * 拒绝流程
     * @param processInstanceId 流程实例id
     * @param comment 终止意见
     * @param taskId 当前任务id
     * @param userId 终止用户
     */
    void refuseProcess(String processInstanceId, String comment, String taskId, String userId);

    /**
     * 审批通过
     * @param taskId 任务id
     * @param variables 流程变量
     */
    void passProcess(String taskId, Map<String, Object> variables);

    /**
     * 回退指定节点
     * @param response response
     */
    void backTask(TaskResponse response, String processStatus);

    /**
     * 收回节点
     * @param response response
     */
    void reBackTask(TaskResponse response);

    /**
     * 转办流程
     * @param response response
     */
    void transferAssignee(TaskResponse response);

    /**
     * 转办任务
     * @param response response
     */
    void transferAssigneeList(TaskResponse response);
}
